﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EpsiRisk.DonneesPlateau;
using Microsoft.Xna.Framework;

namespace EpsiRisk.Plateaux
{
    static class ClassGenerateurPlateaux
    {
        public static ClassPlateau genererPlateau()
        {
            ClassPlateau p = new ClassPlateau();
            p.Nom = "Risk Classique";
            p.TailleCarte = new Vector2(800, 520);
            p.FondCarte = "RiskClassique_game_map";
            p.AliasSousTerritoire = "Pays";
            p.AliasTerritoire = "Continent";
            List<ClassVoisinage> v = new List<ClassVoisinage> { };
            //Europe
            //Europe Occidentale
            //Europe de l'Est
            //Scandinavie
            //Europe du Nord
            //Grande Bretagne
            //Islande
            //Ukraine
            ClassTerritoire t_Europe = new ClassTerritoire();
            ClassSousTerritoire st_EurOccid = new ClassSousTerritoire("Europe Occidentale");
            st_EurOccid.armeesDisplayPosition = new Vector2(370, 100);
            ClassSousTerritoire st_EurDeLEst = new ClassSousTerritoire("Europe de l'Est");
            st_EurDeLEst.armeesDisplayPosition = new Vector2(420, 105);
            ClassSousTerritoire st_Scandinavie = new ClassSousTerritoire("Scandinavie");
            st_Scandinavie.armeesDisplayPosition = new Vector2(400, 55);
            ClassSousTerritoire st_EurDuNord = new ClassSousTerritoire("Europe du Nord");
            st_EurDuNord.armeesDisplayPosition = new Vector2(400, 85);
            ClassSousTerritoire st_GrandeBretagne = new ClassSousTerritoire("Grande Bretagne");
            st_GrandeBretagne.armeesDisplayPosition = new Vector2(360, 75);
            ClassSousTerritoire st_Islande = new ClassSousTerritoire("Islande");
            st_Islande.armeesDisplayPosition = new Vector2(335, 45);
            ClassSousTerritoire st_Ukraine = new ClassSousTerritoire("Ukraine");
            st_Ukraine.armeesDisplayPosition = new Vector2(455, 70);
            t_Europe.ListeSousTerritoire.AddRange(new List<ClassSousTerritoire> { st_EurDeLEst, st_EurDuNord, st_EurOccid, st_GrandeBretagne, st_Islande, st_Scandinavie, st_Ukraine });
            v.Add(new ClassVoisinage(st_EurDeLEst, st_EurDuNord));
            v.Add(new ClassVoisinage(st_EurDeLEst, st_EurOccid));
            v.Add(new ClassVoisinage(st_EurDeLEst, st_Ukraine));
            v.Add(new ClassVoisinage(st_EurDuNord, st_EurOccid));
            v.Add(new ClassVoisinage(st_EurDuNord, st_GrandeBretagne));
            v.Add(new ClassVoisinage(st_EurDuNord, st_Scandinavie));
            v.Add(new ClassVoisinage(st_EurDuNord, st_Ukraine));
            v.Add(new ClassVoisinage(st_GrandeBretagne, st_EurOccid));
            v.Add(new ClassVoisinage(st_GrandeBretagne, st_Islande));
            v.Add(new ClassVoisinage(st_GrandeBretagne, st_Scandinavie));
            v.Add(new ClassVoisinage(st_Scandinavie, st_Islande));
            v.Add(new ClassVoisinage(st_Scandinavie, st_Ukraine));

            t_Europe.Nom = "Europe";
            t_Europe.ValeurRenforts = 5;

            // Asie
            // Oural
            // Sibérie
            // Yakoutie
            // Corée
            // Mongolie
            // Chine
            // Siam
            // Inde
            // Moyen-Orient
            // Tchita
            // Japon
            // Afghanistan
            ClassTerritoire t_Asie = new ClassTerritoire();
            ClassSousTerritoire st_Oural = new ClassSousTerritoire("Oural");
            st_Oural.armeesDisplayPosition = new Vector2(525, 60);
            ClassSousTerritoire st_Siberie = new ClassSousTerritoire("Sibérie");
            st_Siberie.armeesDisplayPosition = new Vector2(565, 50);
            ClassSousTerritoire st_Yakoutie = new ClassSousTerritoire("Yakoutie");
            st_Yakoutie.armeesDisplayPosition = new Vector2(635, 50);
            ClassSousTerritoire st_Coree = new ClassSousTerritoire("Corée");
            st_Coree.armeesDisplayPosition = new Vector2(710, 45);
            ClassSousTerritoire st_Mongolie = new ClassSousTerritoire("Mongolie");
            st_Mongolie.armeesDisplayPosition = new Vector2(640, 100);
            ClassSousTerritoire st_Chine = new ClassSousTerritoire("Chine");
            st_Chine.armeesDisplayPosition = new Vector2(620, 135);
            ClassSousTerritoire st_Siam = new ClassSousTerritoire("Siam");
            st_Siam.armeesDisplayPosition = new Vector2(640, 185);
            ClassSousTerritoire st_Inde = new ClassSousTerritoire("Inde");
            st_Inde.armeesDisplayPosition = new Vector2(570, 165);
            ClassSousTerritoire st_MoyenOrient = new ClassSousTerritoire("Moyen-Orient");
            st_MoyenOrient.armeesDisplayPosition = new Vector2(480, 150);
            ClassSousTerritoire st_Tchita = new ClassSousTerritoire("Tchita");
            st_Tchita.armeesDisplayPosition = new Vector2(620, 75);
            ClassSousTerritoire st_Japon = new ClassSousTerritoire("Japon");
            st_Japon.armeesDisplayPosition = new Vector2(720, 125);
            ClassSousTerritoire st_Afghanistan = new ClassSousTerritoire("Afghanistan");
            st_Afghanistan.armeesDisplayPosition = new Vector2(530, 100);
            t_Asie.ListeSousTerritoire.AddRange(new List<ClassSousTerritoire> { st_Afghanistan, st_Chine, st_Coree, st_Inde, st_Japon, st_Mongolie, st_MoyenOrient, st_Oural, st_Siam, st_Siberie, st_Tchita, st_Yakoutie });
            v.Add(new ClassVoisinage(st_Afghanistan, st_Oural));
            v.Add(new ClassVoisinage(st_Afghanistan, st_MoyenOrient));
            v.Add(new ClassVoisinage(st_Afghanistan, st_Inde));
            v.Add(new ClassVoisinage(st_Afghanistan, st_Chine));
            v.Add(new ClassVoisinage(st_Chine, st_Inde));
            v.Add(new ClassVoisinage(st_Chine, st_Siam));
            v.Add(new ClassVoisinage(st_Chine, st_Mongolie));
            v.Add(new ClassVoisinage(st_Chine, st_Oural));
            v.Add(new ClassVoisinage(st_Chine, st_Siberie));
            v.Add(new ClassVoisinage(st_Inde, st_MoyenOrient));
            v.Add(new ClassVoisinage(st_Inde, st_Siam));
            v.Add(new ClassVoisinage(st_Tchita, st_Siberie));
            v.Add(new ClassVoisinage(st_Tchita, st_Yakoutie));
            v.Add(new ClassVoisinage(st_Tchita, st_Coree));
            v.Add(new ClassVoisinage(st_Tchita, st_Mongolie));
            v.Add(new ClassVoisinage(st_Japon, st_Coree));
            v.Add(new ClassVoisinage(st_Japon, st_Mongolie));
            v.Add(new ClassVoisinage(st_Coree, st_Yakoutie));
            v.Add(new ClassVoisinage(st_Coree, st_Mongolie));
            v.Add(new ClassVoisinage(st_Mongolie, st_Siberie));
            v.Add(new ClassVoisinage(st_Siberie, st_Oural));
            v.Add(new ClassVoisinage(st_Siberie, st_Yakoutie));

            t_Asie.Nom = "Asie";
            t_Asie.ValeurRenforts = 7;

            //Afrique
            //Madagascar
            //Afrique du Sud
            //Congo
            //Afrique Orientale
            //Afrique du Nord
            //Egypte
            ClassTerritoire t_Afrique = new ClassTerritoire();
            ClassSousTerritoire st_Madagascar = new ClassSousTerritoire("Madagascar");
            st_Madagascar.armeesDisplayPosition = new Vector2(490, 290);
            ClassSousTerritoire st_AfriqueDuSud = new ClassSousTerritoire("Afrique du Sud");
            st_AfriqueDuSud.armeesDisplayPosition = new Vector2(430, 300);
            ClassSousTerritoire st_Congo = new ClassSousTerritoire("Congo");
            st_Congo.armeesDisplayPosition = new Vector2(425, 235);
            ClassSousTerritoire st_AfriqueOrientale = new ClassSousTerritoire("Afrique Orientale");
            st_AfriqueOrientale.armeesDisplayPosition = new Vector2(460, 210);
            ClassSousTerritoire st_AfriqueDuNord = new ClassSousTerritoire("Afrique du Nord");
            st_AfriqueDuNord.armeesDisplayPosition = new Vector2(370, 180);
            ClassSousTerritoire st_Egypte = new ClassSousTerritoire("Egypte");
            st_Egypte.armeesDisplayPosition = new Vector2(420, 155);
            t_Afrique.ListeSousTerritoire.AddRange(new List<ClassSousTerritoire> { st_Congo, st_AfriqueDuNord, st_AfriqueDuSud, st_AfriqueOrientale, st_Madagascar, st_Egypte });
            v.Add(new ClassVoisinage(st_Congo, st_AfriqueDuSud));
            v.Add(new ClassVoisinage(st_Congo, st_AfriqueDuNord));
            v.Add(new ClassVoisinage(st_Congo, st_AfriqueOrientale));
            v.Add(new ClassVoisinage(st_AfriqueOrientale, st_Egypte));
            v.Add(new ClassVoisinage(st_AfriqueOrientale, st_AfriqueDuSud));
            v.Add(new ClassVoisinage(st_Egypte, st_AfriqueDuNord));
            v.Add(new ClassVoisinage(st_Madagascar, st_AfriqueOrientale));
            v.Add(new ClassVoisinage(st_Madagascar, st_AfriqueDuSud));
            v.Add(new ClassVoisinage(st_AfriqueDuNord, st_AfriqueOrientale));

            t_Afrique.Nom = "Afrique";
            t_Afrique.ValeurRenforts = 3;

            //Océanie
            //Indonésie
            //Nouvelle Guinée
            //Australie Occidentale
            //Australie Orientale
            ClassTerritoire t_Oceanie = new ClassTerritoire();
            ClassSousTerritoire st_Indonesie = new ClassSousTerritoire("Indonésie");
            st_Indonesie.armeesDisplayPosition = new Vector2(675, 235);
            ClassSousTerritoire st_NouvelleGuinee = new ClassSousTerritoire("Nouvelle-Guinée");
            st_NouvelleGuinee.armeesDisplayPosition = new Vector2(745, 250);
            ClassSousTerritoire st_AustralieOccidentale = new ClassSousTerritoire("Australie occidentale");
            st_AustralieOccidentale.armeesDisplayPosition = new Vector2(690, 315);
            ClassSousTerritoire st_AustralieOrientale = new ClassSousTerritoire("Australie orientale");
            st_AustralieOrientale.armeesDisplayPosition = new Vector2(730, 300);
            t_Oceanie.ListeSousTerritoire.AddRange(new List<ClassSousTerritoire> { st_Indonesie, st_NouvelleGuinee, st_AustralieOccidentale, st_AustralieOrientale });
            v.Add(new ClassVoisinage(st_Indonesie, st_NouvelleGuinee));
            v.Add(new ClassVoisinage(st_Indonesie, st_AustralieOccidentale));
            v.Add(new ClassVoisinage(st_NouvelleGuinee, st_AustralieOccidentale));
            v.Add(new ClassVoisinage(st_NouvelleGuinee, st_AustralieOrientale));
            v.Add(new ClassVoisinage(st_AustralieOccidentale, st_AustralieOrientale));

            t_Oceanie.Nom = "Océanie";
            t_Oceanie.ValeurRenforts = 2;

            //Amérique du Nord
            // Alaska
            // Territoire du Nord-Ouest
            // Groenland
            // Alberta
            // Ontario
            // Québec
            // Etat de l'Ouest
            // Etat de l'Est
            // Amérique centrale
            ClassTerritoire t_AmeriqueDuNord = new ClassTerritoire();
            ClassSousTerritoire st_Alaska = new ClassSousTerritoire("Alaska");
            st_Alaska.armeesDisplayPosition = new Vector2(60, 45);
            ClassSousTerritoire st_TerrDuNO = new ClassSousTerritoire("Territoire du Nord-Ouest");
            st_TerrDuNO.armeesDisplayPosition = new Vector2(125, 50);
            ClassSousTerritoire st_Groenland = new ClassSousTerritoire("Groenland");
            st_Groenland.armeesDisplayPosition = new Vector2(300, 20);
            ClassSousTerritoire st_Alberta = new ClassSousTerritoire("Alberta");
            st_Alberta.armeesDisplayPosition = new Vector2(110, 75);
            ClassSousTerritoire st_Ontario = new ClassSousTerritoire("Ontario");
            st_Ontario.armeesDisplayPosition = new Vector2(160, 75);
            ClassSousTerritoire st_Quebec = new ClassSousTerritoire("Québec");
            st_Quebec.armeesDisplayPosition = new Vector2(210, 75);
            ClassSousTerritoire st_EtatDeLOuest = new ClassSousTerritoire("Etat de l'Ouest");
            st_EtatDeLOuest.armeesDisplayPosition = new Vector2(100, 110);
            ClassSousTerritoire st_EtatDeLEst = new ClassSousTerritoire("Etat de l'Est");
            st_EtatDeLEst.armeesDisplayPosition = new Vector2(145, 120);
            ClassSousTerritoire st_AmeriqueCentrale = new ClassSousTerritoire("Amérique centrale");
            st_AmeriqueCentrale.armeesDisplayPosition = new Vector2(95, 165);
            t_AmeriqueDuNord.ListeSousTerritoire.AddRange(new List<ClassSousTerritoire> { st_Alaska, st_TerrDuNO, st_Groenland, st_Alberta, st_Ontario, st_Quebec, st_EtatDeLOuest, st_EtatDeLEst, st_AmeriqueCentrale });
            v.Add(new ClassVoisinage(st_Alaska, st_TerrDuNO));
            v.Add(new ClassVoisinage(st_Alaska, st_Alberta));
            v.Add(new ClassVoisinage(st_TerrDuNO, st_Groenland));
            v.Add(new ClassVoisinage(st_TerrDuNO, st_Ontario));
            v.Add(new ClassVoisinage(st_TerrDuNO, st_Alberta));
            v.Add(new ClassVoisinage(st_Groenland, st_Quebec));
            v.Add(new ClassVoisinage(st_Groenland, st_Ontario));
            v.Add(new ClassVoisinage(st_Alberta, st_EtatDeLOuest));
            v.Add(new ClassVoisinage(st_Alberta, st_Ontario));
            v.Add(new ClassVoisinage(st_Ontario, st_EtatDeLOuest));
            v.Add(new ClassVoisinage(st_Ontario, st_EtatDeLEst));
            v.Add(new ClassVoisinage(st_Ontario, st_Quebec));
            v.Add(new ClassVoisinage(st_Quebec, st_EtatDeLEst));
            v.Add(new ClassVoisinage(st_EtatDeLOuest, st_AmeriqueCentrale));
            v.Add(new ClassVoisinage(st_EtatDeLOuest, st_EtatDeLEst));
            v.Add(new ClassVoisinage(st_EtatDeLEst, st_AmeriqueCentrale));

            t_AmeriqueDuNord.Nom = "Amérique du Nord";
            t_AmeriqueDuNord.ValeurRenforts = 5;

            // Amérique du Sud
            // Vénézuela
            // Brésil
            // Pérou
            // Argentine
            ClassTerritoire t_AmeriqueDuSud = new ClassTerritoire();
            ClassSousTerritoire st_Venezuela = new ClassSousTerritoire("Vénézuela");
            st_Venezuela.armeesDisplayPosition = new Vector2(180, 215);
            ClassSousTerritoire st_Bresil = new ClassSousTerritoire("Brésil");
            st_Bresil.armeesDisplayPosition = new Vector2(220, 260);
            ClassSousTerritoire st_Perou = new ClassSousTerritoire("Pérou");
            st_Perou.armeesDisplayPosition = new Vector2(185, 280);
            ClassSousTerritoire st_Argentine = new ClassSousTerritoire("Argentine");
            st_Argentine.armeesDisplayPosition = new Vector2(195, 330);
            t_AmeriqueDuSud.ListeSousTerritoire.AddRange(new List<ClassSousTerritoire> { st_Venezuela, st_Bresil, st_Perou, st_Argentine });
            v.Add(new ClassVoisinage(st_Bresil, st_Venezuela));
            v.Add(new ClassVoisinage(st_Bresil, st_Perou));
            v.Add(new ClassVoisinage(st_Bresil, st_Argentine));
            v.Add(new ClassVoisinage(st_Venezuela, st_Perou));
            v.Add(new ClassVoisinage(st_Perou, st_Argentine));

            t_AmeriqueDuSud.Nom = "Amérique du Sud";
            t_AmeriqueDuSud.ValeurRenforts = 3;

            //voisinage inter-continental
            //Europe
            v.Add(new ClassVoisinage(st_Islande, st_Groenland));
            v.Add(new ClassVoisinage(st_Ukraine, st_Oural));
            v.Add(new ClassVoisinage(st_Ukraine, st_Afghanistan));
            v.Add(new ClassVoisinage(st_Ukraine, st_MoyenOrient));
            v.Add(new ClassVoisinage(st_EurDeLEst, st_Egypte));
            v.Add(new ClassVoisinage(st_EurDeLEst, st_MoyenOrient));
            v.Add(new ClassVoisinage(st_EurOccid, st_AfriqueDuNord));
            //Asie
            v.Add(new ClassVoisinage(st_Coree, st_Alaska));
            v.Add(new ClassVoisinage(st_Siam, st_Indonesie));
            v.Add(new ClassVoisinage(st_MoyenOrient, st_Egypte));
            v.Add(new ClassVoisinage(st_MoyenOrient, st_AfriqueOrientale));
            //Afrique
            v.Add(new ClassVoisinage(st_AfriqueDuNord, st_Bresil));
            //Amérique du Nord
            v.Add(new ClassVoisinage(st_AmeriqueCentrale, st_Venezuela));


            //ajout des territoires
            p.ListeTerritoires.Add(t_Europe);
            p.ListeTerritoires.Add(t_AmeriqueDuSud);
            p.ListeTerritoires.Add(t_AmeriqueDuNord);
            p.ListeTerritoires.Add(t_Afrique);
            p.ListeTerritoires.Add(t_Asie);
            p.ListeTerritoires.Add(t_Oceanie);

            //ajout des voisinages
            p.Voisinages = v;

            return p;
        }
    }
}
